package cn.funeralobjects.upms.repository;


import cn.funeralobjects.common.repository.CommonCloudRepository;
import cn.funeralobjects.upms.entity.ERole;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.Optional;

/**
 * 实体Role的数据接口
 *
 * @author FuneralObjects
 * Create date: 2019-08-15 14:10
 */
public interface RoleRepository extends CommonCloudRepository<ERole, Integer> {
    /**
     * 通过名称查角色
     *
     * @param name    角色名
     * @param delSalt 删除盐标记
     * @return 查找结果
     */
    Optional<ERole> findFirstByNameAndDelSalt(String name, Integer delSalt);

    /**
     * 判断名称是否存在
     *
     * @param name    角色名
     * @param delSalt 删除盐标记
     * @return true - 存在
     */
    boolean existsByNameAndDelSalt(String name, Integer delSalt);

    /**
     * 判断名称是否存在（排除指定角色）
     *
     * @param name    角色名
     * @param id      排除的角色id
     * @param delSalt 删除盐标记
     * @return true - 存在
     */
    boolean existsByNameAndIdNotAndDelSalt(String name, Integer id, Integer delSalt);

    /**
     * 更新角色名称
     *
     * @param name    角色名
     * @param id      角色id
     * @param delSalt 删除盐标记
     */
    @Modifying
    @Query("UPDATE ERole SET name = :name WHERE id = :id AND delSalt = :delSalt")
    void updateNameByIdAndDelSalt(String name, Integer id, Integer delSalt);
}
